package Exporter;require 5.000;$ExportLevel = 0;sub export {    my $pack = shift;    my $callpack = shift;    my @imports = @_;    *exports = \@{"${pack}::EXPORT"};    if (@imports) {	my $oops;	my $type;	*exports = \%{"${pack}::EXPORT"};	if (!%exports) {	    grep(s/^&//, @exports);	    @exports{@exports} = (1) x  @exports;	    foreach $extra (@{"${pack}::EXPORT_OK"}) {		$exports{$extra} = 1;	    }	}	foreach $sym (@imports) {	    if (!$exports{$sym}) {		if ($sym !~ s/^&// || !$exports{$sym}) {		    warn qq["$sym" is not exported by the $pack module ],			    "at $callfile line $callline\n";		    $oops++;		    next;		}	    }	}	die "Can't continue with import errors.\n" if $oops;    }    else {	@imports = @exports;    }    foreach $sym (@imports) {	$type = '&';	$type = $1 if $sym =~ s/^(\W)//;	*{"${callpack}::$sym"} =	    $type eq '&' ? \&{"${pack}::$sym"} :	    $type eq '$' ? \${"${pack}::$sym"} :	    $type eq '@' ? \@{"${pack}::$sym"} :	    $type eq '%' ? \%{"${pack}::$sym"} :	    $type eq '*' ?  *{"${pack}::$sym"} :		    warn "Can't export symbol: $type$sym\n";    }};sub import {    local ($callpack, $callfile, $callline) = caller($ExportLevel);    my $pack = shift;    export $pack, $callpack, @_;}1;